<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <script type="text/javascript">
      function demo(obj) {
        this.x = obj.a
      }

      demo({ a: 1 }) //非严格模式： window.demo({a: 1}) this指向window
      console.log(window.x)

      new demo({ a: 1 }) //使用new调用demo时，demo中的this是demo的实例对象
      console.log(d.x)

      // new关键字的作用：
      // 1.创建一个新的空对象(new一次，内存中就要创建一个新的)
      // 2.将构造函数中的this指向这个空对象
      // 3.执行构造函数中的代码，为这个空对象添加属性和方法
      // 4.返回这个对象
    </script>
  </body>
</html>
